package com.black.cat.environment;


import java.util.Map;

public interface ConfigurableEnvironment extends Environment, ConfigurablePropertyResolver {


    /**
     * 重新设置激活的组集合。
     * @param profiles
     */
    void setActiveProfiles(String... profiles);

    /**
     * 向当前激活的组集合中添加一个组。
     * @param profile
     */
    void addActiveProfile(String profile);

    /**
     * 设置默认激活的组集合。激活的组集合为空时会使用默认的组集合。
     *
     * @param profiles
     */
    void setDefaultProfiles(String... profiles);

    /**
     * 获取当前环境对象中的属性源集合，也就是应用环境变量。
     * 属性源集合其实就是一个容纳PropertySource的容器。
     * 这个方法提供了直接配置属性源的入口。
     * @return
     */
  //  MutablePropertySources getPropertySources();

    /**
     * 获取操作系统环境变量
     * 这个方法提供了直接配置系统环境变量的入口。
     * @return
     */
    Map<String, Object> getSystemEnvironment();

    /**
     * 获取虚拟机环境变量
     * 这个方法提供了直接配置虚拟机环境变量的入口。
     * @return
     */
    Map<String, Object> getSystemProperties();

    /**
     * 合并指定环境对象中的配置到当前环境对象中。
     * @param parent
     */
    void merge(ConfigurableEnvironment parent);
}
